package org.dromara.system.api.services;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.AssertUtils;
import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo;
import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo;
import org.dromara.system.api.feign.SystemTaskAssigneeClient;
import org.springframework.stereotype.Service;

/**
 * @author: zhou shuai
 * @date: 2025/2/21 23:23
 * @version: v1
 */
@Slf4j
@Service("sysTaskAssigneeApiService")
@RequiredArgsConstructor
public class SysTaskAssigneeApiService {

    private final SystemTaskAssigneeClient systemTaskAssigneeClient;

    /**
     * 查询角色并返回任务指派的列表，支持分页
     *
     * @param taskQuery 查询条件
     * @return 办理人
     */
    public RemoteTaskAssigneeVo selectRolesByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) {
        R<RemoteTaskAssigneeVo> rolesTaskAssigneeResult = systemTaskAssigneeClient.selectRolesByTaskAssigneeList(taskQuery);
        AssertUtils.assertTrue(R.isSuccess(rolesTaskAssigneeResult), "查询角色并返回任务指派的列表失败");
        return rolesTaskAssigneeResult.getData();
    }


    /**
     * 查询岗位并返回任务指派的列表，支持分页
     *
     * @param taskQuery 查询条件
     * @return 办理人
     */
    public RemoteTaskAssigneeVo selectPostsByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) {
        R<RemoteTaskAssigneeVo> postsTaskAssigneeResult = systemTaskAssigneeClient.selectPostsByTaskAssigneeList(taskQuery);
        AssertUtils.assertTrue(R.isSuccess(postsTaskAssigneeResult), "查询岗位并返回任务指派的列表失败");
        return postsTaskAssigneeResult.getData();
    }

    /**
     * 查询部门并返回任务指派的列表，支持分页
     *
     * @param taskQuery 查询条件
     * @return 办理人
     */
    public RemoteTaskAssigneeVo selectDeptsByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) {
        R<RemoteTaskAssigneeVo> deptsTaskAssigneeResult = systemTaskAssigneeClient.selectDeptsByTaskAssigneeList(taskQuery);
        AssertUtils.assertTrue(R.isSuccess(deptsTaskAssigneeResult), "查询部门并返回任务指派的列表失败");
        return deptsTaskAssigneeResult.getData();
    }

    /**
     * 查询用户并返回任务指派的列表，支持分页
     *
     * @param taskQuery 查询条件
     * @return 办理人
     */
    public RemoteTaskAssigneeVo selectUsersByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery) {
        R<RemoteTaskAssigneeVo> usersTaskAssigneeResult = systemTaskAssigneeClient.selectUsersByTaskAssigneeList(taskQuery);
        AssertUtils.assertTrue(R.isSuccess(usersTaskAssigneeResult), "查询用户并返回任务指派的列表失败");
        return usersTaskAssigneeResult.getData();
    }

}
